﻿using System;
using System.Windows.Forms;
using Business.Entity.Contabil.Pessoa.SubClass.Usuario.ClassesRelacionadas;
using Business.Entity.Fiscal;
using Business.Enum;
using Business.Forms;
using Business.Seguranca;
using Business.Validation;
using DevExpress.XtraEditors;

namespace Business.NotaDaGente.Form
{
    public partial class FormGerarArquivoNotaDaGente : FormDefault,IForm
    {
        public FormGerarArquivoNotaDaGente()
        {
            Name = "FormGerarArquivoNotaDaGente";
            InitializeComponent();

        }

        private void cmdGerar_Click(object sender, System.EventArgs e)
        {

            var nfs = NotaFiscalRepository.GetQueryOver()
                .Where(fiscal => (int)fiscal.Modelo ==(int) ModeloNotaFiscal.D &&
                    (fiscal.DataEmissao >= txtDataInicial.DateTime && 
                    fiscal.DataEmissao <= txtDataFinal.DateTime)).List();
            if (txtDataInicial.DateTime < DateTime.Parse("01/10/2007"))
            {
                MessageBox.Show("Somente devem ser enviadas notas fiscais emitidas em data posterior à '01/10/2007'.");
                txtDataInicial.Focus();
                return;
            }
            if (DateTime.Now.Date < txtDataFinal.DateTime)
            {
                MessageBox.Show("A data final não pode ser maior que a data atual.");
                txtDataFinal.Focus();
                return;
            }
            using (var arquivo = new NotaDaGente())
            {
                arquivo.Inicio = txtDataInicial.DateTime;
                arquivo.Fim = txtDataFinal.DateTime;
                txtResultado.Text = arquivo.Gerar(nfs);
            }
        }

        public object Save()
        {
            throw new System.NotImplementedException();
        }

        public void Update(object entity)
        {
            throw new System.NotImplementedException();
        }

        public bool Delete(object entity)
        {
            throw new System.NotImplementedException();
        }

        public object CurrentObject { get; set; }

        public PermissaoForm Permissao
        {
            get
            {
                return SegurancaUtils.GetPermissaoForm(Name);
            }
        }

        public EntityValidationResult Validate()
        {
            throw new System.NotImplementedException();
        }

        public void Reload()
        {
            
        }

        public void Cancel()
        {
            Close();
        }

        public object New()
        {
            throw new System.NotImplementedException();
        }

        public XtraForm Form
        {
            get
            {
                return this;
            }
        }

        public FormState FormState { get; set; }
    }
}
